#include <stdio.h>
#include <unistd.h> // fork
#include <sys/types.h> // getpid() getppid()

//getpid() 获取当前的pid  getppid()获取父进程的pid
int main()
{
    printf("main process\n");

    pid_t pid = fork();
    if (pid == -1)
    {
        printf("创建进程失败\n");
    }
    if (pid > 0)
    {
        while (1)
        {
            sleep(2);
            printf("这个是父进程 pid = %d ppid = %d 子进程fork->pid = %d\n",getpid(),getppid(),pid);
        }
    }
    if (pid == 0)
    {
        while (1)
        {
            sleep(1);
            printf("这个是子进程 pid = %d ppid = %d\n",getpid(),getppid());
        }
    }
    //僵尸态 子进程结束的时候，父进程在执行其他任务（死循环），没有去释放子进程的资源
    //孤儿态 子进程结束之前，父进程提前结束了，子进程就会去向上寻找父进程   当子进程处于死循环时，由于父进程结束，则子进程无法结束运行，只能被kill -9 pid 杀死

    return 0;
}
